1. Technical Field
This disclosure generally relates to streaming applications, and more specifically relates to selecting which of multiple virtual machines (VMs) that implement parallel operators in a streaming application should be torn down based on performance of the operators in the VMs.
2. Background Art
Streaming applications are known in the art, and typically include multiple operators coupled together in a flow graph that process streaming data in near real-time. An operator typically takes in streaming data in the form of data tuples, operates on the tuples in some fashion, and outputs the processed tuples to the next operator. Streaming applications are becoming more common due to the high performance that can be achieved from near real-time processing of streaming data.
Many streaming applications require significant computer resources, such as processors and memory, to provide the desired near real-time processing of data. However, the workload of a streaming application can vary greatly over time. Allocating on a permanent basis computer resources to a streaming application that would assure the streaming application would always function as desired (i.e., during peak demand) would mean many of those resources would sit idle when the streaming application is processing a workload significantly less than its maximum. Furthermore, what constitutes peak demand at one point in time can be exceeded as the usage of the streaming application increases. For a dedicated system that runs a streaming application, an increase in demand may require a corresponding increase in hardware resources to meet that demand.
Systems have been developed to dynamically increase the performance of a streaming application by creating parallel paths of operators that are implemented in multiple virtual machines (VMs). Once there are multiple parallel paths of operators in different VMs, should it be determined that the processing capability of all of the parallel paths is no longer needed, one of more of the VMs can be torn down. One solution would be to tear down the VM that was last created. However, this could result in tearing down a parallel path that is performing better than another parallel path.